/**
 * 网络请求工具类
 * 统一管理 API 请求
 */

// API 基础地址
const BASE_URL = 'https://api.playtruly.cn';
// const BASE_URL = 'http://124.71.77.44:2233';

/**
 * 发送 HTTP 请求
 * @param {Object} options 请求配置
 * @returns {Promise}
 */
function request(options) {
  return new Promise((resolve, reject) => {
    const {
      url,
      method = 'POST',
      data = {},
      header = {},
      showLoading = false,
      loadingText = '加载中...'
    } = options;

    // 完整的 URL
    const fullUrl = `${BASE_URL}${url}`;

    console.log('🚀 =============== 开始请求 ===============');
    console.log('📍 URL:', fullUrl);
    console.log('🔧 Method:', method);
    console.log('📦 Data:', data);

    // 显示加载提示
    if (showLoading) {
      wx.showLoading({
        title: loadingText,
        mask: true
      });
    }

    // 发送请求
    wx.request({
      url: fullUrl,
      method: method,
      data: data,
      header: {
        'Content-Type': 'application/json',
        ...header
      },
      success: (res) => {
        console.log('✅ 请求成功');
        console.log('📨 响应状态:', res.statusCode);
        console.log('📊 响应数据:', res.data);

        if (showLoading) {
          wx.hideLoading();
        }

        // 判断响应状态
        if (res.statusCode === 200) {
          const responseData = res.data;

          // 检查业务状态
          if (responseData.status === 'success') {
            resolve(responseData);
          } else {
            // 业务错误
            const errorMsg = responseData.message || '请求失败';
            console.error('❌ 业务错误:', errorMsg);
            reject(new Error(errorMsg));
          }
        } else {
          // HTTP 错误
          const errorMsg = `HTTP错误: ${res.statusCode}`;
          console.error('❌', errorMsg);
          reject(new Error(errorMsg));
        }
      },
      fail: (err) => {
        console.error('💥 请求失败:', err);

        if (showLoading) {
          wx.hideLoading();
        }

        // 网络错误
        const errorMsg = err.errMsg || '网络请求失败';
        reject(new Error(errorMsg));
      },
      complete: () => {
        console.log('🏁 请求结束');
        console.log('');
      }
    });
  });
}

/**
 * GET 请求
 */
function get(url, data, options = {}) {
  return request({
    url,
    method: 'GET',
    data,
    ...options
  });
}

/**
 * POST 请求
 */
function post(url, data, options = {}) {
  return request({
    url,
    method: 'POST',
    data,
    ...options
  });
}

/**
 * PUT 请求
 */
function put(url, data, options = {}) {
  return request({
    url,
    method: 'PUT',
    data,
    ...options
  });
}

module.exports = {
  request,
  get,
  post,
  put,
  BASE_URL
};

